Criando uma lixeira [Melhorado]

Publicado por Sandro Marcell 18/07/2007

[ Hits: 5.303 ]

Homepage: http://sanmarcell.wordpress.com

Download lixo.sh




Versão melhorada de um script que cria uma simples lixeira para o usuário. (Versão CShell)

Dica:
Coloque esta linha em seu .bashrc:

alias rm=nome_do_script

Assim toda vez que você chamar pelo terminal o comando rm, estará invocando este script.

Falou!!!

  



Esconder código-fonte

#!/bin/csh
#
# Criando uma simples lixeira. 
# (Versão CShell)
#
# Autor: Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Obs.:
# Arquivos e diretórios são removidos sem pedido de confirmação. 
# É possível o uso do metacaractere (*).
# A opção -r remove a lixeira.

# Checando parâmetros:
if ($#argv == 0) then
   echo "Uso: `basename $0` arquivo1 [arquivoN]\
     ou\
     `basename $0` -r  [Para remover a lixeira]"
   exit
endif

# Criando a lixeira:
set LIXEIRA = $home/lixeira
if (! -e $LIXEIRA) then
   mkdir $LIXEIRA
endif

# O que fazer?
switch ($argv[1])
    # Remover a lixeira!
    case -r:
       # Descartando a opção -r:
       shift

       # Checando parâmetros:
       if ($#argv >= 1) then
          echo "Erro: A opção [-r] não aceita parâmetros!"
          exit
       else
          # Perguntando antes de remover:
          echo -n "Deseja realmente remover a lixeira? [s/n]:"
          # Capturando resposta:
          set R = $<
          # Checando resposta:
          if ($R == s || $R == S) then 
             # Removendo
             rm -R -f $LIXEIRA >& /dev/null
             echo "Lixeira removida!"
             exit
          else if ($R == n || $R == N) then
             echo "Saindo..."
             exit
          else
             echo "[$R] Resposta inválida."
             exit
          endif
       endif
          breaksw

    # ou mandar tudo pro lixo...
    default:
       # Início do loop:
       foreach A ($argv)
       
       # Testes condicionais:
       if (! -e $A) then
          echo "-> Arquivo ou diretório não encontrado."
          continue
       else if (! -w $A) then
          echo "-> Sem permissão para remover."
          continue
       endif
       
       # Removendo:
       ls $A | xargs cp -R -f $A --target-directory=$LIXEIRA >& /dev/null
       ls $A | xargs rm -R -f $A >& /dev/null
       echo "Arquivo removido!"
       end
          breaksw
endsw
# Fim

Scripts recomendados

Mover arquivos conforme nomenclatura

Atualiza os pacotes do seu pc

Script para enviar email, avisando quando alguem loga na maquina

Adicionar usuários para serem autenticados pelo squid

Monitoramento automático de logs e envio por e-mail – Fácil e explicado


  

Comentários
[1] Comentário enviado por SMarcell em 31/07/2007 - 08:43h

Aqui há a versão melhorada deste script:

>> http://www.slackbr.org/forum/viewtopic.php?t=14625

Falou!!!

[2] Comentário enviado por vitinho217 em 26/06/2014 - 10:20h

Muito legal Marcell, que tal uma função limpar lixeira ? Seria interessante.

Um abraço e VIVA O LINUX !

[3] Comentário enviado por vitinho217 em 26/06/2014 - 10:31h

# Limpar lixeira
case -[cC]:
# Descartando a opcao [-c]:
shift

# Nenhum parametro e aceito:
if ($#argv >= 1) then
echo "A opcao [-c] nao aceita parametros\!"
exit 1
endif

# Perguntando antes de remover:
echo -n "Deseja realmente limpar a lixeira? [s/n]:"

# Checando resposta:
set resp = $<
if ($resp == s || $resp == S) then
rm -rf * $lixo >& /dev/null
echo "Lixeira limpa\!"
exit
else if ($resp == n || $resp == N || $resp == "") then
echo "Operacao cancelada\!"
exit
else
echo "[$resp]: Resposta invalida\!"
exit
endif
breaksw


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts